package com.gitee.wsl.mathematics.geometry.api

import com.gitee.wsl.mathematics.coordinate.Coordinate

interface Shape<T:Number,V:Coordinate<T,V>> : PointContainer<T, V>{

    val center: V

    val closed: Boolean get() = false

    fun getBounds(): CloseShape<T,V>
}

interface CloseShape<T:Number,V:Coordinate<T,V>>:Shape<T,V>{

    override val closed: Boolean get() = true

    override fun getBounds(): CloseShape<T,V> = this
}